﻿// ———————————————————————–
// <copyright file="XMLConfigMerge.cs" company="The MITRE Corporation">
//    Copyright (c) 2010 The MITRE Corporation. All rights reserved.
//    Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
//    http://www.apache.org/licenses/LICENSE-2.0
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//    See the License for the specific language governing permissions and
//    limitations under the License.
// </copyright>
// ———————————————————————–
/////////////////////////////////////////////////////////////////////////////////////////////////
// XMLConfigMerge.cs - "Merges XML config files to make future configuration updates easier"
// Project: "EDXLSharp_Tools"- "XMLConfigMerge"
//
// Language:    C#, .NET 4.0
// Platform:    Windows 7, VS 2012
// Author:      Rob Gustafson The MITRE Corporation
/////////////////////////////////////////////////////////////////////////////////////////////////

// Copyright (c) 2012 The MITRE Corporation. All rights reserved.
//
// NOTICE
// This software was produced for the U. S. Government
// under Contract No. FA8721-09-C-0001, and is
// subject to the Rights in Noncommercial Computer Software
// and Noncommercial Computer Software Documentation Clause
// (DFARS) 252.227-7014 (JUN 1995)

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;

namespace XMLConfigMerge
{
    class XMLConfigMerge
    {
        static void Main(string[] args)
        {
            if (args.Length == 3 && args[0] == "merge")
            {
                String newConfig = args[1];
                String oldConfig = args[2];
                Console.WriteLine("Merging the new contents of " + newConfig);
                Console.WriteLine("into existing file " + oldConfig);

                if (!File.Exists(newConfig))
                {
                    Console.WriteLine("ERROR: could not find "+newConfig);
                    return;
                }

                if (!File.Exists(oldConfig))
                {
                    Console.WriteLine("No existing file present, so copying " + newConfig);
                    File.Copy(newConfig, oldConfig);
                }

                StreamReader newConfigSR = new StreamReader(newConfig);
                StreamReader oldConfigSR = new StreamReader(oldConfig);

                XDocument newXML = XDocument.Parse(newConfigSR.ReadToEnd());
                XDocument oldXML = XDocument.Parse(newConfigSR.ReadToEnd());
                XDocument finalXML = XDocument.Parse(newConfigSR.ReadToEnd());
                
                finalXML.Add(oldXML);

                foreach (XElement configElement in newXML.Descendants(XName.Get("EDXLDistribution", @"urn:oasis:names:tc:emergency:EDXL:DE:1.0")))
                {
                   //if(oldXML.
                }


            }
        }
    }
}
